package org.feng.entity;

import java.sql.Timestamp;
import java.time.LocalDateTime;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import javax.validation.constraints.NotBlank;

import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;

import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
import io.quarkus.security.jpa.Username;

/**
 * 设备信息
 * @author FengWenXue
 *
 */
@Entity
public class Device extends PanacheEntityBase {

    /** 
     * 设备ID
     */
	@Id
    @GeneratedValue
    public Integer id;
    
    /**
     * 设备类别 0 吸氧机 1 制氢机 2 售货机
     */
	@Column(nullable=false,updatable=false)
    public Byte type;
    
    /**
     * 放置位置 房间号 服务厅
     */
    @Column(length=30,nullable=true)
    public String position;

    /**
     * 经度
     */
    public float latitude;
    
    /**
     * 纬度
     */
    public float longitude;

    /**
     * 所属运营商ID
     */
	@Column(nullable=false)
   public Integer ispId;
    
	@JsonIgnore
    @Transient
    public ServiceProvider getIsp(){
    	return ServiceProvider.findById(ispId);    	
    };
   /**
     * 所属服务商ID
     */
    public Integer svrId;
 
    @Transient
    public ServiceProvider getServer(){
    	if (svrId!=null&&0!=svrId)
    		return ServiceProvider.findById(svrId); 
    	else
    		return null;
    };
    /**
     * 供应商ID
     */
    @Column(nullable=false)
    public Integer supplierId;
	
    //@JsonIgnore
    @Transient
    public ServiceProvider getSupplier(){
     	return ServiceProvider.findById(supplierId); 
    };
    /**
     * 设备型号
     */
    @Column(length=12,nullable=false)
    public String model;
	
	/**
	 * 设备批次
	 */
    @Column(length=12,nullable=false)
    public String batch;
	
	/**
	 * 蓝牙模块ID(地址) AA:BB:CC:DD:EE:FF
	 */
    @Column(length=16,nullable=false)
    public String bleId;
    
    /**
     * 存在状态 1 正常  2 备机 -2 报废 -5 机械故障 -4 电子故障 -1 锁定  >0 显示  <0 不显示
     */
    //@Column(columnDefinition="1")
    public Byte status=1;
    
    /**
	* 创建时间,只读
	*/
	@CreationTimestamp //新增时更新时间
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
	@Column(nullable=false,updatable=false)
    private LocalDateTime createTime;//=LocalDateTime.now();

    public LocalDateTime getCreateTime() {
		return createTime;
	}

	/**
	* 修改时间
	*/
	//@JsonIgnore
    @UpdateTimestamp //更新时更新时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    //@Temporal(TemporalType.TIMESTAMP)
	@Column(nullable=false,updatable=false,insertable=false)
    public Timestamp modifyTime;
}
